Python标准库之 xml.etree.ElementTree |
您所在的位置:网站首页 › elementtree生成的sub element缩进 › Python标准库之 xml.etree.ElementTree |
Element类型是一种灵活的容器对象,用于在内存中存储结构化数据。 每个element对象都具有以下属性: 1. tag 标签:string对象,表示数据代表的种类。 2. attrib 属性:dictionary对象,表示附有的属性。 3. text:string对象,表示element的内容。 4. tail:string对象,表示element闭合之后的尾迹。 5. 若干子元素(child elements)。 texttail 1 2 3 4创建元素的方法有Element或者SubElement(), 前者称作元素的构建函数(constructor),用以构建任一独存的元素; 后者称作元素的制造函数(factory function),用以制造某一元素的子元素。 有了一串元素之后,使用ElementTree类来将其打包,把一串元素转换为xml文件或者从xml文件中解析出来。 导入ElementTree import xml.etree.ElementTree as ET使用ElementTree代表整个XML文件,并将其视为一棵树,Element代表这个文档树中的单个节点。 ET对象可以通过以下方法导入数据: # 从硬盘的xml文件中读取 import xml.etree.ElementTree as ET tree = ET.parse('aa.xml') root = tree.getroot() # 获取根节点 # 从字符串读取数据 root = ET.fromstring(aa_as_string)可以对根节点进行操作,获取其子元素 for child in root: print child.tag, child.attrib 生成xml from xml.etree import ElementTree as ET def create_name_same(el): li = [] for i in range(10): li.append(ET.SubElement(el, 'case')) return li def create_name_not(el): ET.SubElement(el, 'name') ET.SubElement(el, 'yyy') ET.SubElement(el, 'xxx') # 创建根节点 root = ET.Element('tasks') sub1 = ET.SubElement(root, 'cases') sub2 = ET.SubElement(root, 'name') # 创建指定节点的相同名字的子节点 li_sub1_sub_node = create_name_same(sub1) # 创建指定节点的不同名字的子节点 for sub1_sub_node in li_sub1_sub_node: create_name_not(sub1_sub_node) # 打印输出root结构 print(ET.dump(root)) # 将创建好的root树写入文件 # 第一种写入文件的方法 tree = ET.ElementTree(root) tree.write("/root/桌面/asd/aaa.xml", encoding='utf-8', xml_declaration=True) # 第二种写入文件的方法 (这个方法生成的xml文件使用文本打开格式是有缩进的) # ET模块转换root为bytes输出, xml_string = ET.tostring(root) from xml.dom import minidom dom = minidom.parseString(xml_string) with open("/root/桌面/asd/aaa.xml", 'w', encoding='utf-8') as f: dom.writexml(f, addindent='\t', newl='\n', encoding='utf-8') # mindom转换dom为字符串str,查看dom的文本结构 # dom.toxml() # dom.toprettyxml() # 等于 添加了addindent='\t', newl='\n'的xml格式的字符串str形式输出 # type(dom.toprettyxml()) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |